<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="vue.js"></script>
    <script src="vue-router.js"></script>
</head>

<body>
    <div id="app">
        <router-link to="/user/foo/profile">hahah</router-link>
        <router-link to="/user/bar/posts">bbbb</router-link>
        <router-view></router-view>
    </div>

    <script>
        'use strict';
        /* 
            error: SyntaxError: missing : after property id
            原因：当使用对象初始化语法创建对象的时候，需要使用半角冒号 (:) 将属性键与属性值隔开
        */
        const User = {
            template: `<div class="user">
                            <h2>User {{ $route.params.name }}</h2>
                            <router-view></router-view>
                        </div>`
        }
        const UserProfile = {
            // 当 /user/:id/profile 匹配成功，
            // UserProfile 会被渲染在 User 的 <router-view> 中
            template: `<div class="userprofile">userProfile {{ $route.params.name}}</div>`
        }
        const UserPosts = {
            // 当 /user/:id/posts 匹配成功
            // UserPosts 会被渲染在 User 的 <router-view> 中
            template: `<div class="userprofile">userposts {{ $route.params.name}}</div>`
        }
        const router = new VueRouter({
            routes: [{
                path: '/user/:name',
                component: User,
                /**
                    注意，以 / 开头的嵌套路径会被当作根路径。 
                    充分的使用嵌套组件而无须设置嵌套的路径。

                    children 配置就是像 routes 配置一样的路由配置数组，所以可以嵌套多层路由。

                    此时，基于上面的配置，当访问 /user/foo 时，User 的出口是不会渲染任何东西，这是因为没有匹配到合适的子路由。
                    如果你想要渲染点什么，可以提供一个 空的 子路由：
                 */
                children: [{
                    path: 'profile',
                    component: UserProfile
                }, {
                    path: 'posts',
                    component: UserPosts
                }]
            }]
        })
        var vm = new Vue({
            router
        }).$mount('#app');
    </script>
</body>

</html>